草庐IT

sql - 自连接查询

全部标签

ruby - 如何让 rspec 不显示数据库查询而只显示带有 rails_12factor 的点?

ruby:2.0rails:3.2.17rspec:2.14.8Database:mysqlrspecspec用于仅输出点。当我推送到Heroku并且最近添加了rails_12factorgem来绕过它时,我收到了弃用警告。但是,现在在本地运行规范时,我会得到每个事务的详细数据库输出。当我需要它时这是一个很好的选择,否则它会产生很多不需要和分散注意力的输出。所以我想要一个将它用于Heroku而不是本地的选项。请注意,这不会通过使用格式化程序来解决,例如rspecspec-fd此外,如果出现错误,在这种冗长程度下,错误几乎总是滚出当前页面...09:50:39durrantmCastle

arrays - 如何在 Ruby 中有效地连接多个数组?

我只是想在Ruby中连接多个数组,但找不到令人满意的方法。示例输入:foo=[1,2,3]bar=[4,5,6]baz=[7,8,9]预期结果:(不修改现有数组)[1,2,3,4,5,6,7,8,9]我的实际数组多大,所以我对有效的解决方案很感兴趣。也可能有三个以上的数组,因此最好使用简短的语法。到目前为止我尝试了什么foo+bar+baz是显而易见的,简洁明了。但它被计算为(foo+bar)+baz。换句话说:它创建了一个中间数组[1,2,3,4,5,6],它在整个操作后被丢弃。如documentation中所述:repeateduseof+=onarrayscanbequitein

ruby-on-rails - SQL 注入(inject)和 ActiveRecord

这对SQL注入(inject)安全吗:Guest.where(:event_id=>params[:id])我在发送params[:id]时没有进行任何类型的清理。一般来说,所有这些activerecord方法都安全吗?(如where、joins等。)如果不是,安全的最佳做法是什么?另外,是否有任何我应该注意的警告/边缘情况?谢谢 最佳答案 ActiveRecord的所有查询构建方法,如where、group、order等等,都可以安全地防止SQL注入(inject)ASLONGAS您不向它们传递原始SQL字符串。这容易受到SQL注

sql - 在 AREL 中分组 ands 和 ors

我正在尝试使用arel查询此sql片段的等效项:WHERE(("participants"."accepted"='f'AND"participants"."contact_id"=1)OR"participants"."id"ISNULL)所以我想要(accepted&&contact_id=1)ORNULL这是我在AREL中得到的participants[:accepted].eq(false).and(participants[:contact_id].eq(1).or(participants[:id].is(nil)问题是,这会产生:("participants"."acce

ruby-on-rails - Has_Many :Through or :finder_sql

我已经确定了我想要的东西,但我似乎无法以Rails设计师正在寻找的方式获得它。基本上,我有(请搁置多元化/等问题):人类关系(parent、后代)我正在尝试获取单亲的所有后代,以及许多后代的单亲(假设每个后代只有一个parent)。我可以在模型中通过以下方式做到这一点:has_one:parent,:through=>:relationships,:foreign_key=>:human_id,:source=>:source_humanhas_many:offsprings,:finder_sql=>'SELECTDISTINCToffsprings.*'+'FROMhumansof

ruby-on-rails - Rails 查询执行导致数据库峰值

我的Rails应用程序出现问题,一些随机查询需要大约5秒或更长时间才能完成。大多数时候,查询非常简单(select*fromxwhereid=?),而且字段甚至也被编入索引。这里有一些关于设置的更多信息:反向nginx代理背后的Puma3.5.04个worker,每个worker最少4个,最多8个线程。Rubyv2.2.3,Railsv4.2.4PostgreSQL9.4数据库线程池设置为最多60个连接监控应用8GBRAM、4个CPU、SSD。我在查看Appsignal中的查询性能时发现了这一点。我注意到大多数查询在几毫秒内完成,然后时不时地,仍然在同一个请求中,有多个查询需要5秒以上

ruby-on-rails - 在 Rspec 中用项目符号标记 N+1 查询

我正在尝试使用bulletgem标记N+1并在代码中添加计数器缓存的位置.但是手动执行所有检查N+1查询的操作似乎非常痛苦,所以我尝试使用Bullet和Rspec,使用他们推荐的设置步骤:#config/environments/test.rbconfig.after_initializedoBullet.enable=trueBullet.bullet_logger=trueBullet.raise=true#raiseanerrorifn+1queryoccursend#spec/spec_helper.rbifBullet.enable?config.before(:each)d

ruby-on-rails - 无法连接到服务器 : "/var/run/postgresql/.s.PGSQL.5432"?

我在RubyOnRails中有一个带有postgresql数据库的简单网页,但是当我运行服务器时出现此错误,我不知道我这样做了。我使用postgresql,因为heroku需要应用程序在postgresql中。我在ubuntu13.10上工作错误是:PG::ConnectionBad无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受Unix域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?我需要帮助谢谢 最佳答案 像这样创建一个软链接(softlink),这对我有用$sudoln-

ruby-on-rails - ActiveRecord:查询未对 STI 子类使用正确的类型条件

我有一组STI子类继承自User基类。我发现在子类定义中的某些条件下,对子类的查询没有正确使用type条件。classUser在开发中加载Rails控制台时,它会按照我的预期进行:Admin:SELECT`users`.*FROM`users`WHERE`users`.`type`IN('Admin')但是当点击应用程序(localhost/pow)时,它缺少type条件,我明白了:Admin:SELECT`users`.*FROM`users`但在部署到暂存服务器时不是来自应用程序:Admin:SELECT`users`.*FROM`users`WHERE`users`.`type`

ruby-on-rails - 如何使用 OAuth 将 Aweber 连接到我的 Rails 应用程序?

我正在尝试通过OAuth将我的Rails应用程序与Aweber集成,使用officialawebergem.如果我在Rails控制台中遵循他们的流程,我可以获得访问token,没问题:oauth=AWeber::OAuth.new(ENV["AWEBER_CONSUMER_KEY"],ENV["AWEBER_CONSUMER_SECRET"])putsoauth.request_token.authorize_url#=>https://auth.aweber.com/1.0/oauth/authorize?oauth_token=xxxxxxxxxxxxxx然后我访问该URL,输入我